<?
	/* Se asegura que el archivo es incluido por el index */
		defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );
	/* Cuando se hace el include del archivo automaticamente crea un objeto y lo guarda en una variable temporal */
		$this->oTmpObject = new Organizacion_frm( $this );

	class Organizacion_frm extends Frm
	{
	function Organizacion_frm( &$oModule )
		{
			$this->Frm( $oModule );
			//Crea los Objetos de los campos de edicion
			$this->aFields['ncVisibilidad'] 				= new InputList ( "Visibilidad", "ncVisibilidad" );
			$this->aFields['ncOrganizacion'] 			= new Input( "Codigo", "ncOrganizacion", '', false, true );
			$this->aFields['cdOrganizacion'] 			= new InputText ( "Nombre", "cdOrganizacion" );
			$this->aFields['cSigla'] 						= new InputText ( "Sigla", "cSigla" );
			$this->aFields['cPaginaWeb'] 				= new InputText ( "Web", "cPaginaWeb" );
			$this->aFields['cEmail'] 						= new InputText ( "Email Institucional", "cEmail" );
			$this->aFields['nCuit']						= new InputNumber ( "Cuit",  "nCuit" );
			$this->aFields['ncNaturalezaJuridica']	= new InputList ( "Naturaleza juridica", "ncNaturalezaJuridica" );
			$this->aFields['ncCategoriaIva']			= new InputList ( "Categoria Iva", "ncCategoriaIva" );
			$this->aFields['ncActividad']				= new InputList ( "Actividad", "ncActividad" );
			$this->aFields['ncOrganizacionPadre']	= new InputLookup ( "Grupo", "ncOrganizacionPadre" );
			$this->aFields['aRotulo']					= new InputCheck( "Tags", "aRotulo" );
	}
	function setValue( $ncOrganizacion )
		{
			$this->aFields['ncOrganizacion']->setValue( $ncOrganizacion );
			$cSql = "SELECT ncGrupo, ncVisibilidad, cdOrganizacion, cSigla, cPaginaWeb, cEmail, nCuit, ncNaturalezaJuridica, ncCategoriaIva, ODo.ncDomicilio, Org.ncOrganizacionPadre
								FROM atOrganizacion as Org
									LEFT JOIN atOrganizacionDomicilio as ODo
										ON ODo.ncOrganizacion = Org.ncOrganizacion
										AND ODo.ncTipoDomicilio = ". DOMICILIO_PRINCIPAL . "
								WHERE Org.ncOrganizacion = $ncOrganizacion
								ORDER BY bPorOmision DESC";
			$aRow = $this->oDatabase->getArray($cSql);
			$this->setFieldsArray ( $aRow );
			return $aRow;
		}
	function setLevel( $nLevel)
		{
			switch ( $nLevel )
			{
				case 2:
					$this->aInput = array( 'ncOrganizacion', 'ncVisibilidad', 'cdOrganizacion', 'cSigla', 'cPaginaWeb', 'cEmail', 'ncDomicilio' );
					break;
				case 3:
					$this->aInput = array( 'ncOrganizacion', 'ncVisibilidad', 'cdOrganizacion', 'cSigla', 'cPaginaWeb', 'cEmail', 'ncNaturalezaJuridica', 'ncOrganizacionPadre', 'aRotulo' , 'ncDomicilio' ); //, 'nCuit', 'ncCategoriaIva'
					break;
			}
		}
	function initializeForm()
		{
			// Configura el Titulo
				$this->setLabel( "Organizacion" );
			return true;
		}
	function make ( $nOption = '')
		{
			$this->mergeOptions( $cOptions );
			$this->aFields['ncDomicilio'] = $this->oModule->loadClass( 'Domicilio_frm' );
			// Si Recibe la Pk => busca los datos
				if ( $this->isRetrievable() &&  $this->aFields['ncOrganizacion']->getValue() )
				{
					$aRow = $this->setValue( $this->aFields['ncOrganizacion']->getValue() );
					// Verifica que tenga Permisos
					$ncMiGrupo = obtenerMiGrupo();
					$bPermisoEscritura = ($aRow['ncVisibilidad'] == VISIBILIDAD_PUBLICO || $aRow['ncGrupo'] == $ncMiGrupo);
					if ( !$bPermisoEscritura )
					{
						$bPermisoLectura = ($aRow['ncVisibilidad'] != VISIBILIDAD_PRIVADO || $aRow['ncGrupo'] == $ncMiGrupo);
						if ( $bPermisoLectura )
						{
							$oDet = $this->oModule->loadClass( 'organizacion_lst' );
							$oDet->makeDet();
							return true;
						} else
						{
							addMessage( "No tiene permisos" );
							return false;
						}
					}
				}
			return parent::make( $nOption );
		}
	function verify()
	{
		$cdOrganizacion = getParam('cdOrganizacion');
		if ( $ncOrganizacion ) $cFiltro  = " AND ncOrganizacion <> $ncOrganizacion ";
		if ( $cdOrganizacion  != "")
		{
			$cdOrganizacion = str_replace( ' ' , '%', ' ' . $cdOrganizacion . ' ' );
			list ( $ncOrganizacionExistente ,$cdOrganizacionExistente )= $this->oDatabase->getArray("SELECT ncOrganizacion, cdOrganizacion  FROM atOrganizacion WHERE cdOrganizacion like '$cdOrganizacion' OR cSigla like '$cdOrganizacion' $cFiltro ", 0, 1);
			if ( $cdOrganizacionExistente ) $this->addMessage( "Verifique que la organizacion no este ya cargada, ya existe una " . 	$this->oModule->makeAction ( $cdOrganizacionExistente, VER_ORGANIZACION , "ncOrganizacion=" . $ncOrganizacionExistente ) , FORM_ADVERTENCIA );
		}
		$cSigla= getParam('cSigla');
		if ( $cSigla  != "")
		{
			list ( $ncOrganizacionExistente ,$cdOrganizacionExistente )= $this->oDatabase->getArray("SELECT ncOrganizacion, cdOrganizacion  FROM atOrganizacion WHERE cSigla = '$cSigla' $cFiltro ", 0, 1);
			if ( $cdOrganizacionExistente ) $this->addMessage( "Verifique que la organizacion no este ya cargada, por que " . 	$this->oModule->makeAction ( $cdOrganizacionExistente, VER_ORGANIZACION , "ncOrganizacion=" . $ncOrganizacionExistente ) . " tiene la misma sigla ($cSigla)", FORM_ADVERTENCIA );
		}
		$cPaginaWeb = getParam('cPaginaWeb');
		if ( $cPaginaWeb  != "")
		{
			list ( $ncOrganizacionExistente ,$cdOrganizacionExistente )= $this->oDatabase->getArray("SELECT ncOrganizacion, cdOrganizacion  FROM atOrganizacion WHERE cPaginaWeb like '%$cPaginaWeb%' $cFiltro ", 0, 1);
			if ( $cdOrganizacionExistente ) $this->addMessage( "Verifique que no se dupliquen organizaciones. " . $this->oModule->makeAction ( $cdOrganizacionExistente, VER_ORGANIZACION , "ncOrganizacion=" . $ncOrganizacionExistente ) . " tiene la misma web." , FORM_ADVERTENCIA);
		}
	}
	function initializeField( $cField , &$oField )
		{
			switch ( $cField )
			{
				case 'ncOrganizacionPadre':
					$oField->setForm( $this );
					initializeOrganizacion( $oField );
				break;
				case 'cdOrganizacion':
					$oField->setMandatory( $this->isMandatory() );
					$oField->setLength( 120);
					if ( $this->getOptionsLevel() ==  2 && !$this->aFields['ncOrganizacion']->getValue() ) $oField->setOnBlur( $this->getVerifyEvent() );
				break;
				case 'cSigla':
					$oField->setLength( 20);
					if ( $this->getOptionsLevel() ==  2 && !$this->aFields['ncOrganizacion']->getValue() ) $oField->setOnBlur( $this->getVerifyEvent() );
				break;
				case 'ncActividad':
					$cSql = "SELECT ncActividad, cdActividad FROM acActividad";
					$oField->setMatrix( $this->oDatabase->getMatrix($cSql) );
				break;
				case 'ncVisibilidad':
					$cSql = "SELECT ncVisibilidad, cdVisibilidad FROM acVisibilidad";
					$oField->setDefault( VISIBILIDAD_PUBLICO );
					$oField->setMatrix( $this->oDatabase->getMatrix($cSql) );
				break;
				case 'ncNaturalezaJuridica':
					$cSql = "SELECT ncNaturalezaJuridica, cdNaturalezaJuridica FROM acNaturalezaJuridica ";
					$oField->setMatrix( $this->oDatabase->getMatrix($cSql) );
				break;
				case 'ncCategoriaIva':
					$cSql = "SELECT ncCategoriaIva, cdCategoriaIva FROM acCategoriaIVA";
					$oField->setMatrix( $this->oDatabase->getMatrix($cSql) );
				break;
				case 'cPaginaWeb':
					$oField->setHelp('Formato del campo web es SIN el prefijo "http://", ingrese por ej www.google.com.');
					$oField->setLength( 50 );
					if ( $this->getOptionsLevel() ==  2 && !$this->aFields['ncOrganizacion']->getValue() ) $oField->setOnBlur( $this->getVerifyEvent() );
				break;
				case 'cEmail':
					$oField->setLength( 40 );
				break;
				case 'ncDomicilio':
					$oField->setLabel("Domicilio Principal");
					$oField->setFormName( $this->getFormName() );
					$oField->setOptionsLevel(2);
					$oField->setOptionsType( 'N');
				break;
				case 'aRotulo':
					if ($this->aFields['ncOrganizacion']->getValue()  )
					{
						$cSql = "SELECT Par.ncRotulo, Par.cdRotulo, Tab.ncOrganizacion
											FROM atRotuloOrganizacion as Par
												LEFT JOIN atOrganizacionRotulo as Tab
													ON Par.ncRotulo = Tab.ncRotulo
													AND Tab.ncOrganizacion = " . $this->aFields['ncOrganizacion']->getValue()  . "
											ORDER BY Par.cdRotulo";
					} else
					{
						$cSql = "SELECT ncRotulo, cdRotulo
											FROM atRotuloOrganizacion";
					}
					$oField->setMatrix( $this->oDatabase->getMatrix( $cSql ) );
					$oField->setMultiple( true );
				break;				
				case 'nCuit':
					$oField->setLength( 11);
				break;
			}
		}
	}
?>
